class Solution
{
public:
    string addBinary(string a, string b)
    {
        int n = a.size() - 1, m = b.size() - 1;
        int t = 0; // 进位
        string ret;
        while (n >= 0 || m >= 0 || t)//当有任意一个字符串未计算完，或者进位不为0的时候
        {
            if (n >= 0)//a字符串尚未计算完
                t += (a[n--] - '0');
            if (m >= 0)//b字符串尚未计算完
                t += (b[m--] - '0');
            ret += (t % 2 + '0');//加个位
            t /= 2;//更新进位
        }
        reverse(ret.begin(), ret.end());//逆置
        return ret;
    }
};